//
//  StatusListViewModel.swift
//  新浪微博
//
//  Created by yaozhen on 2017/12/7.
//  Copyright © 2017年 ZYZ. All rights reserved.
//

import Foundation

//微博数据列表模型
/*
 父类的选择
 
 -如果类需要使用‘KVC’或者字典转模型框架设置对象值，类就需要继承自NSObject
 -如果类知识包装一些代码逻辑（写了一些函数）,可是不用任何父类，好处更加轻量级
 -提示：如果oc  一律继承自NSObject
 
 使命：负责微博的数据处理
 
 */
///上拉刷新最大尝试次数
private let maxPullupTryTimes = 3
class StatusListViewModel {
    lazy var statusList = [statusModel]()
    //上拉错误刷新
    lazy var pullupErrorTimes = 0
    //是否上拉刷新
    func loadStatus(pullup:Bool,completion: @escaping (_ isSuccess: Bool, _ shouldRefresh:Bool)->()){
        //判断是否是上拉刷新
        if pullup && pullupErrorTimes > maxPullupTryTimes {
            completion(true,false)
            return
        }
        
        
        //下拉刷新 since_id 去除第一条数据
        let since_id = pullup ? 0 : statusList.first?.id ?? 0
        let max_id = !pullup ? 0 : (statusList.last?.id ?? 0)
        NetworkManager.shared.statuList(since_id: since_id,max_id: max_id) { (list, isSuccess) in
            //1  字典转模型
            guard let array = NSArray.yy_modelArray(with: statusModel.self, json: list ?? []) as? [statusModel] else
            {
                completion(isSuccess,false)
                return
            }
            print("****刷新到\(array.count)条数据***")
            //2 拼接数据
            self.statusList = array + self.statusList
            print("当前数组数量:&&&&  \(self.statusList.count))")
            //3 判断上拉刷新数据量
            if pullup && array.count == 0 {
                self.pullupErrorTimes += 1
                completion(isSuccess,false)
            }else{
                completion(isSuccess,true)
            }
        }
    }
}
